DEVICE FREQ

1. Introduction

FREQ is an internal device that allows you to measure the frequency of a digital signal. Also integrates a pulse counter one way a first-order low-pass digital filter on the measure, a function of scaling and a duty cycle.

The main features of the device are:

2. Device declaration

In order to use the device you must declare it in the appropriate INTDEVICE section of the configuration unit.

;--------------------------------- 
; Internal device declaration 
;--------------------------------- 
INTDEVICE 
...
<device_name>  FREQ  TCamp  IntL

Where:

<device_name>the name given to the device
FREQkeyword that identifies the FREQ device
TCampsample time device in milliseconds (1÷250)
IntLinterrupt line associated to digital input to which is applied the signal to monitor
:todo:Attention: All fields of the declaration are necessary and must be present on the same line.
Set “X.X” or “X” If a resource is not available or cannot be used.
Disable a resource means disable all functionality of the device using it.

3. Operation

3.1 Antiglitch filter

The “antiglitch filter” block execute a digital filtering on the input signal for troubleshooting. It samples the input signal at regular intervals and determines the exit status by checking the status of the majority of the samples. The size of the filter depends on a parameter of the QMOVE system (“QMOVE:sys004” system variable).

:info:The existence of the “antiglitch filter” block and it's features depend on the product that you are using.
Consult the documentation relating to the product for more information.

3.2 Edge detect

The “edge detect” block capture the output signal from the antiglitch filter and measuring the time between two consecutive fronts to get the frequency measurement. The rising or falling is selected using capture parameter. The frqmin parameter determines the maximum time after which the block value becomes zero.

3.3 Edge counter

The “Edge counter” block creates a counter of faces captured by “edge detect” block.

3.4 Upper limiter

Il blocco “Upper limiter”, come dice la parola stessa, limita i valori di uscita del blocco “edge detect” fino a frqmax.

3.5 Scaling

The “scaling” block execute mathematical operations of multiplication, division and sum, of the block output “upper limiter” value with the scaleA, scaleB and scaleC parameters to get the value measured (outUm) in the desired entity.
The formula to get the measured value is:
outUm = (outbit * scaleA / scaleB) + scaleC

3.6 Low pass filter

The “Low pass filter” block execute a digital filter of the first order (type of the classic RC filter) on the measured value. The time constant of the filter can be set using tfilter parameter.

3.6.1 Notes on operation of the device

4. Parameters table

Name Dimension Default value Access type Unit of measure Valid Range Write conditions Description
frqmax Long Retentive RW Hz/100 or Hz/1000 0÷2147483647 - Maximum frequency
Is the maximum value that can take outfrq. PFor higher frequency signals to frqmax, outfrq is set equal to frqmax.
frqmin Long Retentive RW Hz/100 or Hz/1000 0÷2147483647 - Minimum frequency
Is the minimum detectable frequency from the device. For lower frequencies, the output of the “edge detect” block worth zero.
:todo:
frqmin It also affects the time limit beyond which no input signal is detected; for example, by setting frqmin equal to 1Hz, the device detects no signal and then poses to zero outfrq after 1 sec. By setting, frqmin equal to 0.01 Hz the lack of the signal will be detected after 100 sec. By setting frqmin equal to 0 is how to set 0.01Hz if outfrq it is expressed in hundredths of hertz or 0.001Hz if outfrq is expressed in thousandths of hertz
capture Byte Retentive RW - 0÷5 - Capture mode and resolution signal frequency measurement
Defines the signal capture mode (front and frequency/duty) and resolution of frequency measurement (hundredths or thousandths of an hertz).
0 FIXME i blocchi “edge detect” e “edge counter” sono disabilitati quindi il device fornisce il valore di outfrq sempre uguale a zero mentre outcnt non si incrementa più.
1 il blocco “edge detect” cattura il fronte di discesa del segnale di ingresso ed il valore di outfrq è espresso in centesimi di Hertz. Il blocco “edge counter”, altresì, incrementa il suo valore di uscita outcnt sul fronte di discesa del segnale di ingresso.
2 il blocco “edge detect” cattura il fronte di salita del segnale di ingresso ed il valore di outfrq è espresso in centesimi di Hertz. Il blocco “edge counter”, altresì, incrementa il suo valore di uscita outcnt sul fronte di salita del segnale di ingresso.
3 il blocco “edge detect” cattura il fronte di discesa del segnale di ingresso ed il valore di outfrq è espresso in millesimi di Hertz. Il blocco “edge counter”, altresì, incrementa il suo valore di uscita outcnt sul fronte di discesa del segnale di ingresso.
4 il blocco “edge detect” cattura il fronte di salita del segnale di ingresso ed il valore di outfrq è espresso in millesimi di Hertz. Il blocco “edge counter”, altresì, incrementa il suo valore di uscita outcnt sul fronte di salita del segnale di ingresso.
5 il blocco “edge detect” cattura entrambi i fronti del segnale di ingresso e fornisce sul parametro outfrq il valore del duty cycle in parti per 10000 (es: 5000 indica il 50.00 %).
scaleA Long Ritentivo RW - -2147483648÷2147483647 - Coefficiente A nella funzione di scaling
È il parametro per il quale viene moltiplicato il valore della frequenza rilevato dal blocco “edge detect” nella funzione di scaling. Impostando il parametro a 0 il valore misurato avrà sempre valore 0.
scaleB Long Ritentivo RW - -2147483648÷2147483647 - Coefficiente B nella funzione di scaling
È il parametro per il quale viene diviso il valore della frequenza rilevato dal blocco “edge detect” nella funzione di scaling. Impostando il parametro a 0 il valore misurato avrà sempre valore 0.
scaleC Long Ritentivo RW - -2147483648÷2147483647 - Coefficiente C nella funzione di scaling
È il parametro che viene sommato al risultato ottenuto moltiplicando il valore valore della frequenza rilevata dal blocco “edge detect” moltiplicato per il rapporto tra i parametri scaleA e scaleB della funzione di scaling.
tfilter Word Ritentivo RW ms 0÷32767 - Costante di tempo del filtro
Costante di tempo.
:info:
nel caso in cui tfilter sia minore o uguale del tempo di campionamento del device viene disattivato il filtro ed il parametro outUmF viene aggiornato con lo stesso valore di outUm.
par01 Long Ritentivo RW - -2147483648÷2147483647 - Parametro generico
Parametro disponibile per future implementazioni.
par02 Long Ritentivo RW - -2147483648÷2147483647 - Parametro generico
Parametro disponibile per future implementazioni.
outfrq Long - R Hz/100 oppure Hz/1000 0÷frqmax - Frequenza rilevata
È il valore di uscita del blocco “edge detect”.
outUm Long - R - - - Valore misurato
È il valore della misura cioè il valore di frequenza rilevata passato per la funzione di scaling.
outUmF Long - R - - - Valore misurato filtrato
È il valore della misura dopo l'applicazione del filtro digitale passa basso.
outcnt Long - RW - - - Contatore impulsi
È il valore di uscita del blocco “edge counter” e cioè il numero di fronti di salita o discesa (a seconda del parametro capture) rilevati dal blocco “edge detect”.
outvar Long - RW - - - Variabile generica
Parametro attualmente non implementato.
errcode Byte 0 R - -128÷127 - Codice di identificazione errore
Indica il tipo di errore intervenuto nel device. Il codice è valido solo se st_error = 1. Per ulteriori informazioni consultare il capitolo dedicato
errvalue Byte 0 R - -128÷127 - Codice di identificazione della causa dell'errore
Indica la causa dell'errore intervenuto nel device. Il codice è valido solo se st_error = 1. Per ulteriori informazioni consultare il capitolo dedicato
wrncode Byte 0 R - -128÷127 - Codice di identificazione warning
Indica il tipo di warning intervenuto nel device. Il codice è valido solo se st_warning = 1. Per ulteriori informazioni consultare il capitolo dedicato
wrnvalue Byte 0 R - -128÷127 - Codice di identificazione della causa del warning
Indica la causa del warning intervenuto nel device. Il codice è valido solo se st_warning = 1. Per ulteriori informazioni consultare il capitolo dedicato

5. Tabella stati

NomeValore di defaultDescrizione
st_010Stato input
Stato dell'ingresso sorgente (linea d'interrupt o numero frequenzimetro).
st_020Stato generico
Parametro disponibile per future implementazioni.
st_error0Presenza di un errore
Indica lo stato di errore del device, per riconoscere il tipo di errore si deve far riferimento alle variabili errcode ed errvalue:
0: errore non presente,
1: errore presente
st_warning0Presenza di un warning
Indica lo stato di warning del device, per riconoscere il tipo di warning si deve far riferimento alle variabili wrncode e wrnalue:
0: warning non presente,
1: warning presente

6. Tabella comandi

NomeCondizioneDescrizione
CMD01-Comando generico
Comando disponibile per future implementazioni.
CMD02-Comando generico
Comando disponibile per future implementazioni.
RSERR-Reset dello stato di errore
Azzera lo stato st_error.
RSWRN-Reset dello stato di warning
Azzera lo stato st_warning.

7. Errori e allarmi

7.1 Errori

Quando il device non riesce ad eseguire le operazioni derivanti da una non corretta programmazione da parte dell'utente segnala questa condizione tramite l'attivazione dello stato st_error. Il device, inoltre, rende disponibili, tramite i valori sui parametri errcode ed errvalue, alcune informazioni per meglio comprendere il tipo di errore e quale condizione l'ha generato. Tali informazioni e lo stato di errore st_error, permangono finché non viene eseguito l'apposito comando RSERR che li cancella.
La seguente tabella specifica i valori assunti da errcode:

errcodeDescrizione
0nessun errore
1linea di interrupt associata all'ingresso digitale non supportata dall'hardware

Per mezzo del parametro errvalue è possibile ottenere informazioni più dettagliate riguardo l'errore.
La seguente tabella specifica i valori assunti da errvalue:

errvalueDescrizione
0nessuna informazione riguardo l'errore

7.2 Allarmi

Quando i parametri del device vengono programmati con valori fuori range essi non vengono accettati e mantengono il loro valore precedente. Il device segnala questa condizione tramite l'attivazione dello stato st_warning. Il device, inoltre, rende disponibili, tramite i valori sui parametri wrncode ed wrnvalue, alcune informazioni per meglio comprendere il tipo di warning e quale condizione l'ha generato. Tali informazioni e lo stato di warning st_warning, permangono finché non viene eseguito l'apposito comando RSWRN che li cancella.
La seguente tabella specifica i valori assunti da wrncode:

wrncodeDescrizione
0nessun warning

Per mezzo del parametro wrnvalue è possibile ottenere informazioni più dettagliate riguardo il warning.
La seguente tabella specifica i valori assunti da wrnvalue:

wrnvalueDescrizione
0nessuna informazione riguardo il warning